import React from 'react'; import { FaceLivenessDetector } from '@aws-amplify/ui-react-liveness'; import { Loader, ThemeProvider } from '@aws-amplify/ui-react'; export function LivenessQuickStartReact() { const [loading, setLoading] = React.useState(true); const [createLivenessApiData, setCreateLivenessApiData] = React.useState<{ sessionId: string; } | null>(null); React.useEffect(() => { const fetchCreateLiveness: () => Promise = async () => { /* * This should be replaced with a real call to your own backend API */ await new Promise((r) => setTimeout(r, 2000)); const mockResponse = { sessionId: 'mockSessionId' }; const data = mockResponse; setCreateLivenessApiData(data); setLoading(false); }; fetchCreateLiveness(); }, []); const handleAnalysisComplete: () => Promise = async () => { /* * This should be replaced with a real call to your own backend API */ const response = await fetch( `/api/get?sessionId=${createLivenessApiData.sessionId}` ); const data = await response.json(); /* * Note: The isLive flag is not returned from the GetFaceLivenessSession API * This should be returned from your backend based on the score that you * get in response. Based on the return value of your API you can determine what to render next. * Any next steps from an authorization perspective should happen in your backend and you should not rely * on this value for any auth related decisions. */ if (data.isLive) { console.log('User is live'); } else { console.log('User is not live'); } }; return ( {loading ? ( ) : ( { console.error(error); }} /> )} ); }